package org.fing.edu.uy.esbadp.core.interfaces;

import java.util.List;

import org.fing.edu.uy.esbadp.core.AdpFlowInterface;
import org.fing.edu.uy.esbadp.core.entity.DMRegisteredService;
import org.fing.edu.uy.esbadp.core.entity.GenericTreeNode;
import org.fing.edu.uy.esbadp.core.entity.PropertiesMonitoring;

/**
 * 
 * @author dev
 *
 *	Interfaz que deberan implementar las Estrategias de Adaptacion que se deseen agregar al ESB-Adaptativo
 */
public interface IAdpStrategy {

	/**
	 * 
	 * @param service Servicio que requiere adaptacion
	 * @param equivServices Lista de servicios equivalentes ( vacio en caso de que no tenga ninguno )
	 * @param properties Propiedades monitorizadas que definiran la adaptacion.
	 * @return Un nuevo arbol que representa la adaptacion que se requiere para el servicio segun la estrategia consultada , en caso de no poder
	 * realizar una adaptacion para el servicio el retorno sera null.
	 */
	public GenericTreeNode<AdpFlowInterface> getAdpTree(DMRegisteredService service, List<DMRegisteredService> equivServices,PropertiesMonitoring properties);
	
}
